/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Xadrez.Modelo;

/**
 *
 * @author Jéssica
 */
public class Knight extends Piece {

    public Knight() {
    }

    public Knight(String color) {

        this.setColor(color);
        this.setFirstMove(true);

    }
    /*public void move(Move m, Board board) {

    if(isValidMove(m, board)){
    m.getDestination().setPiece(this);
    m.getOrigin().setPiece(null);

    }


    }*/

    @Override
    public boolean isValidMove(Move m, Board board) {
        // Analisa se o movimento responde a alguns critérios
        // Se a origem é a mesma do destino, então o movimento não é válido
        // (não implementado ainda)
        // Se o cavalo anda em L
        // Se no destino está ocupado por alguma peça de mesma cor, o movimento não é válido



        boolean validate = false;

        Square origem = m.getOrigin();
        Square destino = m.getDestination();

        if (m.onLimits()) {

            if (destino.getPiece() != null) {
                if (destino.getPiece().getColor().equals(origem.getPiece().getColor())) {
                    validate = false;
                } else {//Se tem peça de cor diferente
                    //implementar alguma coisa de capturar peça
                    validate = checkPosition(origem, destino);
                }
            } else {

                validate = checkPosition(origem, destino);
            }


        }



        return validate;

    }

    private boolean checkPosition(Square origem, Square destino) {
        boolean validate = false;

        int difX = Math.abs(origem.getPositionX() - destino.getPositionX());
        int difY = Math.abs(origem.getPositionY() - destino.getPositionY());

        switch (difX) {
            case 2:
                if (difY == 1) {
                    validate = true;
                }
                break;
            case 1:
                if (difY == 2) {
                    validate = true;
                }
                break;
        }

        return validate;
    }

    public String toString(){
      //  System.out.println("cavalo");
        return "cavalo";
    }
}
